/**
 定义： Separate the construction of a complex object from its representation so
 that the same construction process can create different representations.（将一个
 复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。）
 ● Product 产品类
 通常是实现了模板方法模式，也就是有模板方法和基本方法，例子中的
 BenzModel 和 BMWModel 就属于产品类。
 ● Builder 抽象建造者
 规范产品的组建，一般是由子类实现。例子中的 CarBuilder 就属于抽象建造者。
 ● ConcreteBuilder 具体建造者
 实现抽象类定义的所有方法，并且返回一个组建好的对象。例子中的 BenzBuilder
 和 BMWBuilder 就属于具体建造者。● Director 导演类
 负责安排已有模块的顺序，然后告诉 Builder 开始建造
 使用场景：
 ● 相同的方法，不同的执行顺序，产生不同的事件结果时，可以采用建造者模式。
 ● 多个部件或零件，都可以装配到一个对象中，但是产生的运行结果又不相同时，
 则可以使用该模式。
 ● 产品类非常复杂，或者产品类中的调用顺序不同产生了不同的效能，这个时候使
 用建造者模式非常合适。
 建造者模式与工厂模式的不同：
 建造者模式最主要的功能是基本方法的调用顺序安排，这些基本方法已经实现了，
 顺序不同产生的对象也不同；
 工厂方法则重点是创建，创建零件是它的主要职责，组装顺序则不是它关心的。
*/
